home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / UTILITY1 / BTNGO.ZIP / BTNGOC.ZIP / WSTRING.CPP < prev    next >
C/C++ Source or Header  |  1993-09-28  |  2KB  |  77 lines

  1. //  Copyright (c) 1993 John Deurbrouck, Box 390, Mountlake Terrace, WA 98043
  2. #include<windows.h>
  3. #include"wstring.hpp"
  4. void WinMessageString::SetDefaults(){
  5.     arr[0]=0;
  6.     space_left=ARRSIZE;
  7.     is_hex=0;
  8.     fuStyle=MB_ICONSTOP;
  9. }
  10. void WinMessageString::err(){
  11.     this->show("Memory Error");
  12.     arr[0]=0;
  13.     space_left=ARRSIZE;
  14. }
  15. void WinMessageString::show(char *caption){
  16.     DWORD ver=GetVersion();
  17.     unsigned int winver=LOBYTE(LOWORD(ver));
  18.     winver<<=8;
  19.     winver|=HIBYTE(LOWORD(ver));
  20.     if(winver>=0x30A){
  21.         switch(fuStyle&(MB_ICONASTERISK|MB_ICONEXCLAMATION|MB_ICONHAND|MB_ICONQUESTION)){
  22.         case MB_ICONASTERISK:    MessageBeep(MB_ICONASTERISK);    break;
  23.         case MB_ICONEXCLAMATION: MessageBeep(MB_ICONEXCLAMATION); break;
  24.         case MB_ICONHAND:        MessageBeep(MB_ICONHAND);        break;
  25.         case MB_ICONQUESTION:    MessageBeep(MB_ICONQUESTION);    break;
  26.         default:                 MessageBeep(MB_OK);              break;
  27.         }
  28.     }
  29.     else MessageBeep(-1);
  30.     MessageBox((HWND)hwndParent,arr,caption,(UINT)(fuStyle|MB_OK));
  31.     SetDefaults();
  32. }
  33. WinMessageString& WinMessageString::operator<<(char __far *cp){
  34.     if(cp==NULL)return *this;
  35.     int len=lstrlen(cp);
  36.     if(len<1)return *this;
  37.     if(len>space_left)err();
  38.     if(len<=space_left){
  39.         lstrcpy(avail(),cp);
  40.         space_left-=len;
  41.     }
  42.     return *this;
  43. }
  44. #ifndef __BORLANDC__
  45. WinMessageString& WinMessageString::operator<<(char *cp){
  46.     if(cp==NULL)return *this;
  47.     int len=lstrlen(cp);
  48.     if(len<1)return *this;
  49.     if(len>space_left)err();
  50.     if(len<=space_left){
  51.         lstrcpy(avail(),cp);
  52.         space_left-=len;
  53.     }
  54.     return *this;
  55. }
  56. #endif
  57. WinMessageString& WinMessageString::operator<<(int x){
  58.     if(space_left<6)err();
  59.     space_left-=wsprintf(avail(),is_hex?"%04X":"%d",x);
  60.     return *this;
  61. }
  62. WinMessageString& WinMessageString::operator<<(long x){
  63.     if(space_left<11)err();
  64.     space_left-=wsprintf(avail(),is_hex?"%08X":"%ld",x);
  65.     return *this;
  66. }
  67. WinMessageString& WinMessageString::operator<<(unsigned int x){
  68.     if(space_left<6)err();
  69.     space_left-=wsprintf(avail(),is_hex?"%04X":"%u",x);
  70.     return *this;
  71. }
  72. WinMessageString& WinMessageString::operator<<(unsigned long x){
  73.     if(space_left<11)err();
  74.     space_left-=wsprintf(avail(),is_hex?"%08X":"%lu",x);
  75.     return *this;
  76. }
  77.